The present invention relates to an object collaboration apparatus for performing collaboration processing such as communication and cooperation between a group of computers or objects, and relates to an object collaboration apparatus for organizing a system, in which a plurality of processes arise in an object-oriented environment, and which flexibly adjusts to environmental changes and progressively changes accordingly through a computer network.
As the use of networks has spread in recent years, the number of systems in which a plurality of objects distributed on a network perform a process while collaborating with each other is increasing. As techniques for such objects to perform a process in collaboration with each other, research focuses on object-oriented programming and component technology.
One example of object-oriented programming is the open specification for operating distributed objects CORBA (Common Object Request Broker: Architecture and Specification), issued by the trade association OMG (Object Management Group), which has been set up in order to standardize and promote object-oriented technology.
FIG. 37 shows an example of an object collaboration in a client/server system based on CORBA. In this system, a series of processes is conducted by collaboration of a client application and a server application, namely by an object collaboration.
Application developers describe the service interface provided by a client and a server with IDL (Interface Definition Language). The interface is defined by a group of operations that can be requested from an object. For each operation, the name of the operation, parameters, return value, error exception processing, and additional information are defined.
Compiling the content defined with IDL by a specialized compiler creates a stub for a client and a skeleton for a server. The stub is a group of routines that provide a client application with access to a group of operations defined with IDL. In the client application, calling the routine provided by the stub activates the operation. The skeleton provides a dispatching routine to a method routine provided by a server application.
The stub and the skeleton are generated in a programming language which is used by the corresponding client application or server application. For example, if C is used as the programming language, the stub is formed as a group of functions in C. The client application calls the function corresponding to the operation to be carried out, thereby calling the corresponding routine of the server application via the stub, ORB run time and the skeleton. After executing the predetermined processing, the processing result is returned to the client application which originated the call.
Thus, organizing object collaboration processing has become easier with CORBA. However, when actually trying to organize such an object collaboration processing with CORBA, it is necessary not only to understand CORBA itself, but also to design the object according to the CORBA specifications and define it with IDL. In other words, to construct the system it is necessary to fully understand CORBA""s application methods.
It is also necessary to be fully aware of the relationship between the objects. That is to say, it is necessary to make clear what kind of processing is conducted by each object, and which transmission parameters are required for the processing.
Creating an open interface between objects has increased the independence of objects. However, the existence of a fixed relationship between these objects is still a precondition.
When thinking of human communication, vague interaction often happens in reality. For example, when a person tries to solve a problem, he/she utilizes his/her own resources or asks other people for collaboration. In the case of utilizing the own resources, a problem is considered from various view points. Also, in the case of asking others for help, it is possible to ask either a specific person for help, or to broadly request assistance from an unspecified person. In the case of broadly asking an unspecified person for assistance, the reaction of the recipient varies in many ways. Some who have a solution may present an answer, while others may give advice by passing on their own experience and knowledge, even if that does not directly present a solution. Still others might ignore the inquiry because of total indifference. In other words, whether or not the recipient reacts to a certain piece of information depends on the recipient. Furthermore, when the recipient decides to react to the information, how the recipient does so depends on the recipient.
When the human being in this analogy is replaced with an object here, depending on the object there may be different reactions regarding the choice of receiving or not receiving information floated on a network or the processing performed in response to the received information. That is, a free collaboration is desirable in the collaboration between objects. In conventional collaboration methods, it was a precondition that the relation between objects was fixed, and it was difficult to organize collaboration systems with such free relations.
Thus, in distributed object system technology, for which CORBA and DCOM are prominent examples, the framework for providing access to an object that is transparent to the network and the framework with regard to interfaces for distributed objects are constantly improving. However, these frameworks are not adequate to answer the question of how to organize the dynamic collaboration between objects.
To solve these problems, it is an object of the present invention to increase the degree of freedom for collaboration among objects connected to a network or for collaboration among computers. It is also an object of the present invention to present an object collaboration apparatus performing collaboration processes such as communication or cooperation in groups of computers or groups of objects, responding in a flexible manner to changes of the environment in an object-oriented environment, and organizing a system that changes progressively.
Because the object collaboration apparatus of the present invention increases the degree of freedom and the flexibility of collaboration chains among organized objects, it is possible to insert new objects into the organized collaboration between objects, and to organize a new object collaboration in a flexible and dynamic manner. Moreover, it is possible to couple object collaborations that have no collaboration relation together, and thereby organize a new object collaboration in a flexible and dynamic manner. Furthermore, it is possible to disrupt the organized collaboration between objects and construct an object collaboration chain by inserting an external object so as to organize a new object collaboration in a flexible and dynamic manner by so-called external intervention. Also, it is possible to organize not only one-to-one object collaboration, but to organize a new one-to-many object collaboration in a flexible and dynamic manner by so-called receiver-side collaboration participation or to organize a new many-to-one object collaboration in a flexible and dynamic manner by so-called sender-side collaboration participation.
It is another object of the object collaboration apparatus of the present invention to enable the setting of collaboration conditions in the object collaboration relations and control the permission of collaborations among those objects, while ensuring the above-mentioned degree of freedom and flexibility of object collaboration.
It is another object of the object collaboration apparatus of the present invention to provide a function for easily and explicitly grasping the relation of organized object collaborations, namely, input message patterns to which the objects react, the objects"" actions and output message patterns and the collaborations conditions.
It is another object of the object collaboration apparatus of the present invention to form object collaboration in a flexible manner given a message pattern of an object serving as a starting point of an object collaboration to be organized and a message pattern of an object serving as an ending point by searching an object forming a collaboration relation that connects the object of the starting point with the object of the ending point.
In order to solve the above-mentioned problems, it is necessary to organize the collaboration among objects in a more flexible manner. This cannot be solved simply by breaking up applications into more components but a framework is necessary, in which functions can be built dynamically, while objects interact with one another. However, if the relations among the collaborating objects are so close that they depend on each other""s internal states and internal functions, then it is not easy to dynamically construct functions with this interaction. Consequently, flexible relations between the collaborating objects must be defined when trying to dynamically construct functions with collaborations.
The following aspects relate to human communication and human behavior for collaborating with each other. In human communication and human behavior for collaborating with each other, there is a condition called xe2x80x9cawareness.xe2x80x9d There is a model that proposes that exchanging information based on this xe2x80x9cawarenessxe2x80x9d creates the variation and flexibility of human communication and behavior.
In addition to the communication behavior, the xe2x80x9cawarenessxe2x80x9d model acknowledges the exchange of information by communication entities that are not involved directly and purposively. Such xe2x80x9cawarenessxe2x80x9d information, in fact, influences several aspects of behavior including the communication behavior.
In the field of distributed object systems technology, if collaboration processing between objects based on detected xe2x80x9cawarenessxe2x80x9d could be performed with information processing similar to the xe2x80x9cawarenessxe2x80x9d between human beings, then it should be possible to make the collaboration between objects flexible. Especially in situations where the other object of the collaboration changes dynamically, if the changing object and the object monitoring it can perform an information exchange similar to the xe2x80x9cawarenessxe2x80x9d in human communication and can autonomously execute processing, then this can serve as an advantageous processing model between collaborating objects on the network. This is because the xe2x80x9cawarenessxe2x80x9d model defines a flexible relationship in object collaboration and creates the flexibility and possibility of dynamic change in the collaboration between objects.
An object collaboration apparatus in accordance with the present invention organizes collaboration between objects by linking objects with relations between messages floating on an object field and actions corresponding to these messages, and changes the organized object collaboration relations in a flexible and dynamic manner by changing the relations between messages and actions in a flexible and dynamic manner
In order to solve the above-mentioned problems, an object collaboration apparatus in accordance with the present invention includes a message receiving portion with which the objects monitor and input messages that have been sent over a network; a message/action reaction relation storage portion for storing relations between messages and information on actions that are reactions to the messages; and an action execution portion that executes actions in accordance with the message/action reaction relations; includes an action execution portion that executes actions in accordance with the message/action reaction relations; a message/action reaction relation update control portion for controlling an updating of reaction relations between messages and actions in accordance with the necessity to update the reaction relations between messages and actions; a message/action reaction relation separation portion for separating an existing message/action reaction relation in the message/action reaction relation storage portion specified by the message/action reaction relation update controlling portion; and a message/action reaction relation organizing portion for associating specified actions with specified messages with the message/action reaction relation update controlling portion; wherein a new relation between an action and a message is organized, intervening into an existing relation between an action and a message.
Here, if the specification of the message/action reaction relation update controlling portion is the specification of an existing message/action reaction relation and the specification of a new message/action reaction relation to be inserted, then the message/action reaction relation separation portion separates the existing message/action reaction relation based on this specification, and based on the specifications, the message/action reaction relation organizing portion associates the existing message with a new action and a associates a new message outputted as a part of the new action with the existing action, and an object having a new message/action reaction relation is inserted between the existing message and the exiting action.
With this configuration, changes in the flow of object collaboration can be performed in a flexible and dynamical manner by changing the message/action reaction relations, the necessity to perform program changes in objects and recompile, which exists when changing object collaborations in conventional systems, is eliminated, and it is possible to make system design with object collaborations more effective.
With the present invention, organizing, changing, deleting, or removing object collaboration relations in a flexible manner is made possible by employing a message/action reaction relation separation portion and a message/action reaction relation organizing portion. In one example, a cascaded insertion of object collaborations becomes possible by cascading the insertion of message/action reaction relations. Also, the removal of a specified object is possible, organizing an object collaboration by first separating the collaboration relations at a specified object, and then bypassing this object and setting a message/action reaction relation connecting the preceding and the following object. Furthermore, it is possible to couple independent objects by insertion of an object bridging a plurality of independent objects. Conversely, it is possible to separate an object collaboration by taking an object from a series of object collaborations and disrupting the collaboration with the preceding and following object. Furthermore, object collaboration can be made parallel by appropriate branching of collaboration relations of inserted or coupled objects.
The present invention uses these various kinds of object collaboration relations, and thus can be applied to a variety of system configurations. For example, if a plurality of objects are provided that react to a message resulting as an action of one object, then it is possible to devise an object collaboration apparatus with receiver-side participation, and it becomes possible to search objects from which a process can be requested with a bidding system. Conversely, if an object is organized, that reacts to messages sent from a plurality of objects, then it is possible to devise an object collaboration apparatus with sender-side participation, a plurality of parallel object collaborations can be bundled together, and it becomes possible to receive replies from objects to which a process is requested in a bidding system and award a bid.
Furthermore, in order to make the insertion of new object collaborations into a series of object collaborations easier, object collaborations include an object collaboration core portion, in which object collaboration relations are maintained as a core, and an object collaboration interface portion for interfacing collaboration between the object collaboration core portion and other objects, and if an object collaboration relation is changed, the relations of the object collaboration core portion are maintained unchanged, and the object collaboration relation is changed by changing the collaboration destination of the object collaboration interface portion.
With this configuration, by providing an object collaboration core portion that maintains object collaboration relations as a core, influence on this portion can be avoided when an object collaboration is changed, and by providing an object collaboration interface portion for interfacing collaboration between the object collaboration core portion and other objects, this portion can organize or change the relation with other objects. It is possible to insert several new object collaborations between collaborations of object collaboration interface portions, and it is possible to organize object collaboration by so-called cascaded connection in a flexible manner.
In order to attain the object of setting of collaboration conditions in the object collaboration relations to control the permission of collaborations among those objects, an object collaboration apparatus of the present invention includes a message/action reaction condition setting portion, sets for each object message/action reaction conditions for executing actions corresponding to received messages, the message/action reaction relation storage portion stores message/action reaction conditions associated with message/action reaction relations, and the action execution portion executes an action in response to received messages if the message/action reaction condition is fulfilled.
With this configuration, in order for an object to execute an action, in addition to receiving the corresponding message, it is possible to set a message/action reaction condition in order to react to this received message, and object collaboration can be controlled in a finely tuned manner by permitting or prohibiting collaboration between the objects.
In order to attain the object of providing a function for easily and explicitly grasping the relation of a chain of organized object collaborations, the object collaboration apparatus of the present invention includes an object collaboration relation presentation portion for presenting objects and object collaboration relations that have been organized between the objects. Taking an acceptance scope in which messages inputted by the message receiving portion are acceptable as input message pattern information and taking an output scope to which the action execution portion can output messages as output message pattern information, the object collaboration relation presentation portion presents the object collaboration relations to be presented as collaboration relations between the input message pattern information and the output message pattern information.
If the object collaboration relation presentation portion presents the message/action reaction conditions, then the relations of the organized object collaboration chain, namely the input message patterns to which the objects react, the objects"" actions and output message patterns and the collaborations conditions, can be presented explicitly, and a person who can properly change the relations of the object collaboration chain, such as a programmer, system administrator, or user, can easily understand the object collaboration relations. The objects are displayed as icons, the object collaboration relations are displayed as link information among the icons, or, the object collaboration relations are displayed in a table, so that the object collaboration relations are visualized graphically, and can be grasped easily and explicitly. Moreover, as another means for presenting object collaboration relations, the object collaboration relation presentation portion can express input message pattern information and output message pattern as tags, and present the object collaboration relations to the user in form of tags of a programming language including tags, such as XML.
In an object collaboration apparatus of the present invention, it is preferable that the object collaboration relation presentation portion includes an object collaboration information inquiry function for inquiring object collaboration information of each of the objects; an object collaboration information collecting function for collecting object collaboration information of the objects, which is given by the objects in response to an inquiry to the objects; an object collaboration relation synthesizing function for synthesizing information of the object collaboration relations of all objects from the collected object collaboration information of the objects; and an object collaboration relation presentation function for presenting the synthesized object collaboration relations.
With this configuration, an object collaboration apparatus can be organized dynamically, updated object collaboration relations can be detected as necessary, and based on the result, the object collaboration relations can be presented explicitly to the user.
It is preferable that the object collaboration apparatus of the present invention includes an object collaboration control portion, the object collaboration control portion including an object collaboration change detection function for detecting when a change in the object collaboration relations organized by the object collaboration relation organizing function occurs; an object collaboration illogicality detection function for detecting when a collaboration illogicality occurs in the object collaborations; and an object collaboration logic protection function for canceling the object collaboration change when the object collaboration illogicality detection portion has detected an illogicality in the object collaborations.
With this configuration, an object collaboration apparatus can be organized dynamically, updated object collaboration relations can be examined and analyzed as necessary, and the organizing/changing of relations that obstruct object collaboration operation, such as endless loops of object collaborations, collisions of object collaboration relations etc. can be detected, the organizing/changing of such relations can be cancelled, and a smooth operation of the system can be ensured.
Furthermore, the object collaboration apparatus of the present invention includes an object searching portion that, given an object serving as the starting point of an object collaboration and an object serving as the ending point of an object collaboration, to form an object collaboration from the object serving as the starting point to the object serving as the ending point, detects the messages that an object on the network accepts as input message pattern information, and detects messages that are output as part of an action pattern as output information, and taking the input message pattern and the output message pattern as the search key, searches for an object having these patterns. To form an object collaboration from a first object serving as a starting point to a second object serving as an ending point, the object searching portion searches objects collaborating with these message patterns, taking the message patterns of the objects as a search key, and forms an object collaboration from the first object serving as the starting point to the second object serving as the ending point. For the searches there are various patterns, such as forward searching, backward searching or forward-and-backward bidirectional searching. In a forward search, to form an object collaboration from a first object serving as the starting point to a second object serving as the ending point, the object searching portion, in a first search, takes the output message pattern of the first object as the input message pattern and any pattern as the output message pattern, and searches a third object group; in a second search, takes the output message patterns of the objects of the third object group as the input message pattern and any pattern as the output message pattern, and searches a fourth object group; selects from the output message patterns of the objects of the fourth object group a fourth object whose output message pattern matches with the input message pattern of the second object, and selects from the objects of the third object group a third object having as the output message pattern the input message pattern of the selected fourth object; and forms an object collaboration from the first object via the third object and the fourth object to the second object.
Providing a computer-readable storage medium storing a program for realizing an object collaboration apparatus driven in accordance with the present invention, it is possible to organize an object collaboration apparatus that can organize an object collaboration apparatus of the present invention on a computer system, and organize or change the object collaboration apparatus in a flexible and dynamical manner, by reading the storage medium with a computer.